
unit synthax;

interface

uses ConceptualSchemes, Steps;

function ParseExpr(AExpr: WideString; AGlobalTable: TConstituents):TStep;

implementation

uses SysUtils, yacclib, yacccnst, USymbolTable, LanguageExceptions, UnaryOps;
const
  IdentLength = 8;

type
  TToken = Integer;
  TIdent = array[1..IdentLength] of WideChar;
  TLexerParserBase = class
	public
		function parse() : Integer; virtual; abstract;
	end;
var
  GlobalTable: TConstituents;
  LocalTable:  TSymbolTable;
  FLine, FLexValue: WideString;
  ResValue: TStep;
const nothing = 257;
const endofline = 258;
const idx = 259;
const idd = 260;
const idtr = 261;
const idl = 262;
const idax = 263;
const idth = 264;
const num = 265;
const idf = 266;
const card = 267;
const leftpar = 268;
const rightpar = 269;
const leftcurl = 270;
const vertline = 271;
const rightcurl = 272;
const leftsqr = 273;
const rightsqr = 274;
const emptyset = 275;
const element = 276;
const notelement = 277;
const subset = 278;
const sbstoreq = 279;
const notsbst = 280;
const eq = 281;
const noteq = 282;
const forall = 283;
const exists = 284;
const grt = 285;
const less = 286;
const grtoreq = 287;
const lessoreq = 288;
const comma = 289;
const andsign = 290;
const orsign = 291;
const imp = 292;
const logiceq = 293;
const union = 294;
const intersect = 295;
const setminus = 296;
const symminus = 297;
const carth = 298;
const plus = 299;
const minus = 300;
const notsign = 301;
const boolsign = 302;

type YYSType = record case Integer of
                 1 : ( yyTIdent : TIdent );
                 2 : ( yyTStepRec : TStepRec );
               end(*YYSType*);

var yylval : YYSType;

type
	TLexer = class(TLexerParserBase)
	public
		function parse() : integer; override;
	end;
	
	TParser = class(TLexerParserBase)
	public
		lexer : TLexer;
		
		function parse() : integer; override;
	end;


function TParser.parse() : integer;

var yystate, yysp, yyn : Integer;
    yys : array [1..yymaxdepth] of Integer;
    yyv : array [1..yymaxdepth] of YYSType;
    yyval : YYSType;

procedure yyaction ( yyruleno : Integer );
  (* local definitions: *)
begin
  (* actions: *)
  case yyruleno of
   1 : begin
         ResValue := yyv[yysp-1].yyTStepRec.T; yyaccept;
       end;
   2 : begin
         ResValue := yyv[yysp-1].yyTStepRec.T; yyaccept;
       end;
   3 : begin
         ResValue := nil; yyaccept;
       end;
   4 : begin
         ResValue := nil; yyaccept;
       end;
   5 : begin
         yyval.yyTStepRec.T := GlobalTable.Find(yyv[yysp-0].yyTIdent).Typification.Debool;
       end;
   6 : begin
         yyval.yyTStepRec.T := Widen(yyv[yysp-2].yyTStepRec, yyv[yysp-0].yyTStepRec);
         yyval.yyTStepRec.Closed := False;
       end;
   7 : begin
         yyval := yyv[yysp-0];
       end;
   8 : begin
         yyval.yyTStepRec.T := yyv[yysp-0].yyTStepRec.T.Bool;
       end;
   9 : begin
         yyval.yyTStepRec.T := yyv[yysp-1].yyTStepRec.T; yyval.yyTStepRec.Closed := True;
       end;
  10 : begin
         yyval.yyTStepRec.T := GlobalTable.Find(yyv[yysp-0].yyTIdent).Typification;
       end;
  11 : begin
         yyval.yyTStepRec.T := LocalTable.Get(yyv[yysp-0].yyTIdent);
         LocalTable.Use(yyv[yysp-0].yyTIdent);
       end;
  12 : begin
         yyval.yyTStepRec.T := GlobalTable.Find(yyv[yysp-0].yyTIdent).Typification;
       end;
  13 : begin
         yyval.yyTStepRec.T := GlobalTable.Find(yyv[yysp-0].yyTIdent).Typification;
       end;
  14 : begin
         AssertEquals(yyv[yysp-2].yyTStepRec.T, yyv[yysp-0].yyTStepRec.T);
         yyval.yyTStepRec.T := yyv[yysp-2].yyTStepRec.T.Debool.Bool;
       end;
  15 : begin
         AssertEquals(yyv[yysp-2].yyTStepRec.T, yyv[yysp-0].yyTStepRec.T);
         yyval.yyTStepRec.T := yyv[yysp-2].yyTStepRec.T.Debool.Bool;
       end;
  16 : begin
         AssertEquals(yyv[yysp-2].yyTStepRec.T, yyv[yysp-0].yyTStepRec.T);
         yyval.yyTStepRec.T := yyv[yysp-2].yyTStepRec.T.Debool.Bool;
       end;
  17 : begin
         AssertEquals(yyv[yysp-2].yyTStepRec.T, yyv[yysp-0].yyTStepRec.T);
         yyval.yyTStepRec.T := yyv[yysp-2].yyTStepRec.T.Debool.Bool;
       end;
  18 : begin
         yyv[yysp-2].yyTStepRec.T := yyv[yysp-2].yyTStepRec.T.Debool;
         yyv[yysp-0].yyTStepRec.T := yyv[yysp-0].yyTStepRec.T.Debool;
         yyval.yyTStepRec.T := Widen(yyv[yysp-2].yyTStepRec, yyv[yysp-0].yyTStepRec).Bool;
         yyval.yyTStepRec.Closed := False;
       end;
  19 : begin
         yyval.yyTStepRec.T := yyv[yysp-0].yyTStepRec.T.Debool.Bool;
       end;
  20 : begin
         yyval := yyv[yysp-0];
       end;
  21 : begin
         yyval := yyv[yysp-0];
       end;
  22 : begin
         yyval.yyTStepRec.T := yyv[yysp-1].yyTStepRec.T.Bool;
       end;
  23 : begin
         yyval.yyTStepRec.T := yyv[yysp-3].yyTStepRec.T.Bool;
         LocalTable.DecLevel;
       end;
  24 : begin
         yyval.yyTStepRec.T := yyv[yysp-0].yyTStepRec.T.Debool.Bool.Bool;
       end;
  25 : begin
         yyval.yyTStepRec.T := yyv[yysp-1].yyTStepRec.T; yyval.yyTStepRec.Closed := True;
       end;
  26 : begin
         yyval.yyTStepRec := TransformStep(yyv[yysp-3].yyTIdent, -1, -1, yyv[yysp-1].yyTStepRec);
       end;
  27 : begin
         yyval.yyTStepRec := TransformStep(yyv[yysp-4].yyTIdent, StrToInt(yyv[yysp-3].yyTIdent), -1, yyv[yysp-1].yyTStepRec);
       end;
  28 : begin
         yyval.yyTStepRec := TransformStep(yyv[yysp-7].yyTIdent, StrToInt(yyv[yysp-6].yyTIdent), StrToInt(yyv[yysp-4].yyTIdent), yyv[yysp-1].yyTStepRec);
       end;
  29 : begin
         yyval := yyv[yysp-0];
       end;
  30 : begin
         yyval.yyTStepRec.T := Widen(yyv[yysp-2].yyTStepRec, yyv[yysp-0].yyTStepRec);
       end;
  31 : begin
         yyval := yyv[yysp-0];
       end;
  32 : begin
         AssertEquals(yyv[yysp-2].yyTStepRec.T, yyv[yysp-0].yyTStepRec.T);
         yyval.yyTStepRec.T := yyv[yysp-2].yyTStepRec.T;
         yyval.yyTStepRec.Closed := True;
       end;
  33 : begin
         LocalTable.IncLevel;
         LocalTable.Add(yyv[yysp-2].yyTIdent, yyv[yysp-0].yyTStepRec.T);
         yyval.yyTStepRec.T := yyv[yysp-0].yyTStepRec.T;
       end;
  34 : begin
         
       end;
  35 : begin
         
       end;
  36 : begin
         
       end;
  37 : begin
         
       end;
  38 : begin
         
       end;
  39 : begin
         
       end;
  40 : begin
         LocalTable.Add(yyv[yysp-2].yyTIdent, yyv[yysp-0].yyTStepRec.T.Debool);
       end;
  41 : begin
         LocalTable.Add(yyv[yysp-2].yyTIdent, yyv[yysp-0].yyTStepRec.T.Debool.Bool);
       end;
  42 : begin
         LocalTable.Add(yyv[yysp-2].yyTIdent, yyv[yysp-0].yyTStepRec.T.Debool.Bool);
       end;
  43 : begin
         
       end;
  44 : begin
         
       end;
  45 : begin
         
       end;
  46 : begin
         
       end;
  47 : begin
         
       end;
  48 : begin
         
       end;
  49 : begin
         
       end;
  50 : begin
         AssertEquals(yyv[yysp-2].yyTStepRec.T, yyv[yysp-0].yyTStepRec.T.Debool);
       end;
  51 : begin
         AssertEquals(yyv[yysp-2].yyTStepRec.T, yyv[yysp-0].yyTStepRec.T.Debool);
       end;
  52 : begin
         yyv[yysp-0].yyTStepRec.T.Debool;
         AssertEquals(yyv[yysp-2].yyTStepRec.T, yyv[yysp-0].yyTStepRec.T);
       end;
  53 : begin
         yyv[yysp-0].yyTStepRec.T.Debool;
         AssertEquals(yyv[yysp-2].yyTStepRec.T, yyv[yysp-0].yyTStepRec.T);
       end;
  54 : begin
         yyv[yysp-0].yyTStepRec.T.Debool;
         AssertEquals(yyv[yysp-2].yyTStepRec.T, yyv[yysp-0].yyTStepRec.T);
       end;
  55 : begin
         AssertEquals(yyv[yysp-2].yyTStepRec.T, yyv[yysp-0].yyTStepRec.T);
       end;
  56 : begin
         AssertEquals(yyv[yysp-2].yyTStepRec.T, yyv[yysp-0].yyTStepRec.T);
       end;
  57 : begin
         yyv[yysp-2].yyTStepRec.T.Debool;
       end;
  58 : begin
         yyv[yysp-2].yyTStepRec.T.Debool;
       end;
  59 : begin
         AssertNumeric(yyv[yysp-2].yyTStepRec.T);
       end;
  60 : begin
         AssertNumeric(yyv[yysp-2].yyTStepRec.T);
       end;
  61 : begin
         
       end;
  62 : begin
         
       end;
  63 : begin
         
       end;
  64 : begin
         
       end;
  65 : begin
         
       end;
  66 : begin
         
       end;
  67 : begin
         yyv[yysp-1].yyTStepRec.T.Debool;
       end;
  68 : begin
         
       end;
  69 : begin
         
       end;
  70 : begin
         
       end;
  71 : begin
         yyval := yyv[yysp-0];
       end;
  72 : begin
         AssertNumeric(yyv[yysp-0].yyTStepRec.T);
       end;
  end;
end(*yyaction*);

(* parse table: *)

type YYARec = record
                sym, act : Integer;
              end;
     YYRRec = record
                len, sym : Integer;
              end;

const

yynacts   = 826;
yyngotos  = 188;
yynstates = 156;
yynrules  = 72;

yya : array [1..yynacts] of YYARec = (
{ 0: }
  ( sym: 260; act: 2 ),
  ( sym: 261; act: 3 ),
  ( sym: 263; act: 4 ),
  ( sym: 264; act: 5 ),
{ 1: }
  ( sym: 0; act: 0 ),
{ 2: }
  ( sym: 259; act: 8 ),
  ( sym: 268; act: 9 ),
  ( sym: 302; act: 10 ),
{ 3: }
  ( sym: 259; act: 14 ),
  ( sym: 260; act: 15 ),
  ( sym: 261; act: 16 ),
  ( sym: 262; act: 17 ),
  ( sym: 266; act: 18 ),
  ( sym: 268; act: 19 ),
  ( sym: 270; act: 20 ),
  ( sym: 301; act: 21 ),
  ( sym: 302; act: 22 ),
{ 4: }
  ( sym: 259; act: 14 ),
  ( sym: 260; act: 15 ),
  ( sym: 261; act: 16 ),
  ( sym: 262; act: 17 ),
  ( sym: 265; act: 30 ),
  ( sym: 266; act: 18 ),
  ( sym: 267; act: 31 ),
  ( sym: 268; act: 32 ),
  ( sym: 270; act: 20 ),
  ( sym: 283; act: 33 ),
  ( sym: 284; act: 34 ),
  ( sym: 301; act: 35 ),
  ( sym: 302; act: 22 ),
{ 5: }
  ( sym: 259; act: 14 ),
  ( sym: 260; act: 15 ),
  ( sym: 261; act: 16 ),
  ( sym: 262; act: 17 ),
  ( sym: 265; act: 30 ),
  ( sym: 266; act: 18 ),
  ( sym: 267; act: 31 ),
  ( sym: 268; act: 32 ),
  ( sym: 270; act: 20 ),
  ( sym: 283; act: 33 ),
  ( sym: 284; act: 34 ),
  ( sym: 301; act: 35 ),
  ( sym: 302; act: 22 ),
{ 6: }
{ 7: }
  ( sym: 258; act: 37 ),
  ( sym: 298; act: 38 ),
{ 8: }
{ 9: }
  ( sym: 259; act: 8 ),
  ( sym: 268; act: 9 ),
  ( sym: 302; act: 10 ),
{ 10: }
  ( sym: 268; act: 9 ),
  ( sym: 302; act: 10 ),
{ 11: }
{ 12: }
{ 13: }
  ( sym: 258; act: 41 ),
  ( sym: 294; act: 42 ),
  ( sym: 295; act: 43 ),
  ( sym: 296; act: 44 ),
  ( sym: 297; act: 45 ),
  ( sym: 298; act: 46 ),
{ 14: }
{ 15: }
{ 16: }
{ 17: }
{ 18: }
  ( sym: 265; act: 47 ),
  ( sym: 268; act: 48 ),
{ 19: }
  ( sym: 259; act: 14 ),
  ( sym: 260; act: 15 ),
  ( sym: 261; act: 16 ),
  ( sym: 262; act: 17 ),
  ( sym: 266; act: 18 ),
  ( sym: 268; act: 19 ),
  ( sym: 270; act: 20 ),
  ( sym: 301; act: 21 ),
  ( sym: 302; act: 22 ),
{ 20: }
  ( sym: 259; act: 14 ),
  ( sym: 260; act: 15 ),
  ( sym: 261; act: 16 ),
  ( sym: 262; act: 54 ),
  ( sym: 266; act: 18 ),
  ( sym: 268; act: 19 ),
  ( sym: 270; act: 20 ),
  ( sym: 301; act: 21 ),
  ( sym: 302; act: 22 ),
{ 21: }
  ( sym: 259; act: 14 ),
  ( sym: 260; act: 15 ),
  ( sym: 261; act: 16 ),
  ( sym: 262; act: 17 ),
  ( sym: 266; act: 18 ),
  ( sym: 268; act: 19 ),
  ( sym: 270; act: 20 ),
  ( sym: 301; act: 21 ),
  ( sym: 302; act: 22 ),
{ 22: }
  ( sym: 268; act: 19 ),
  ( sym: 302; act: 22 ),
{ 23: }
  ( sym: 285; act: 57 ),
  ( sym: 286; act: 58 ),
  ( sym: 287; act: 59 ),
  ( sym: 288; act: 60 ),
  ( sym: 299; act: 61 ),
  ( sym: 300; act: 62 ),
{ 24: }
  ( sym: 281; act: 63 ),
  ( sym: 282; act: 64 ),
  ( sym: 285; act: -71 ),
  ( sym: 286; act: -71 ),
  ( sym: 287; act: -71 ),
  ( sym: 288; act: -71 ),
  ( sym: 299; act: -71 ),
  ( sym: 300; act: -71 ),
{ 25: }
{ 26: }
  ( sym: 290; act: 65 ),
  ( sym: 291; act: 66 ),
  ( sym: 292; act: 67 ),
  ( sym: 293; act: 68 ),
  ( sym: 258; act: -35 ),
  ( sym: 272; act: -35 ),
{ 27: }
  ( sym: 268; act: 70 ),
  ( sym: 289; act: 71 ),
  ( sym: 301; act: 72 ),
{ 28: }
  ( sym: 258; act: 73 ),
{ 29: }
  ( sym: 276; act: 74 ),
  ( sym: 277; act: 75 ),
  ( sym: 278; act: 76 ),
  ( sym: 279; act: 77 ),
  ( sym: 280; act: 78 ),
  ( sym: 281; act: 79 ),
  ( sym: 282; act: 80 ),
  ( sym: 294; act: 42 ),
  ( sym: 295; act: 43 ),
  ( sym: 296; act: 44 ),
  ( sym: 297; act: 45 ),
  ( sym: 298; act: 46 ),
  ( sym: 285; act: -72 ),
  ( sym: 286; act: -72 ),
  ( sym: 287; act: -72 ),
  ( sym: 288; act: -72 ),
  ( sym: 299; act: -72 ),
  ( sym: 300; act: -72 ),
{ 30: }
{ 31: }
  ( sym: 268; act: 81 ),
{ 32: }
  ( sym: 259; act: 14 ),
  ( sym: 260; act: 15 ),
  ( sym: 261; act: 16 ),
  ( sym: 262; act: 17 ),
  ( sym: 265; act: 30 ),
  ( sym: 266; act: 18 ),
  ( sym: 267; act: 31 ),
  ( sym: 268; act: 32 ),
  ( sym: 270; act: 20 ),
  ( sym: 301; act: 35 ),
  ( sym: 302; act: 22 ),
{ 33: }
  ( sym: 262; act: 86 ),
{ 34: }
  ( sym: 262; act: 86 ),
{ 35: }
  ( sym: 259; act: 14 ),
  ( sym: 260; act: 15 ),
  ( sym: 261; act: 16 ),
  ( sym: 262; act: 17 ),
  ( sym: 266; act: 18 ),
  ( sym: 268; act: 32 ),
  ( sym: 270; act: 20 ),
  ( sym: 301; act: 35 ),
  ( sym: 302; act: 22 ),
{ 36: }
  ( sym: 258; act: 89 ),
{ 37: }
{ 38: }
  ( sym: 259; act: 8 ),
  ( sym: 268; act: 9 ),
  ( sym: 302; act: 10 ),
{ 39: }
  ( sym: 269; act: 91 ),
  ( sym: 298; act: 38 ),
{ 40: }
{ 41: }
{ 42: }
  ( sym: 259; act: 14 ),
  ( sym: 260; act: 15 ),
  ( sym: 261; act: 16 ),
  ( sym: 262; act: 17 ),
  ( sym: 266; act: 18 ),
  ( sym: 268; act: 19 ),
  ( sym: 270; act: 20 ),
  ( sym: 301; act: 21 ),
  ( sym: 302; act: 22 ),
{ 43: }
  ( sym: 259; act: 14 ),
  ( sym: 260; act: 15 ),
  ( sym: 261; act: 16 ),
  ( sym: 262; act: 17 ),
  ( sym: 266; act: 18 ),
  ( sym: 268; act: 19 ),
  ( sym: 270; act: 20 ),
  ( sym: 301; act: 21 ),
  ( sym: 302; act: 22 ),
{ 44: }
  ( sym: 259; act: 14 ),
  ( sym: 260; act: 15 ),
  ( sym: 261; act: 16 ),
  ( sym: 262; act: 17 ),
  ( sym: 266; act: 18 ),
  ( sym: 268; act: 19 ),
  ( sym: 270; act: 20 ),
  ( sym: 301; act: 21 ),
  ( sym: 302; act: 22 ),
{ 45: }
  ( sym: 259; act: 14 ),
  ( sym: 260; act: 15 ),
  ( sym: 261; act: 16 ),
  ( sym: 262; act: 17 ),
  ( sym: 266; act: 18 ),
  ( sym: 268; act: 19 ),
  ( sym: 270; act: 20 ),
  ( sym: 301; act: 21 ),
  ( sym: 302; act: 22 ),
{ 46: }
  ( sym: 259; act: 14 ),
  ( sym: 260; act: 15 ),
  ( sym: 261; act: 16 ),
  ( sym: 262; act: 17 ),
  ( sym: 266; act: 18 ),
  ( sym: 268; act: 19 ),
  ( sym: 270; act: 20 ),
  ( sym: 301; act: 21 ),
  ( sym: 302; act: 22 ),
{ 47: }
  ( sym: 268; act: 97 ),
  ( sym: 273; act: 98 ),
{ 48: }
  ( sym: 259; act: 14 ),
  ( sym: 260; act: 15 ),
  ( sym: 261; act: 16 ),
  ( sym: 262; act: 17 ),
  ( sym: 266; act: 18 ),
  ( sym: 268; act: 19 ),
  ( sym: 270; act: 20 ),
  ( sym: 301; act: 21 ),
  ( sym: 302; act: 22 ),
{ 49: }
  ( sym: 269; act: 100 ),
  ( sym: 289; act: 101 ),
{ 50: }
  ( sym: 294; act: 42 ),
  ( sym: 295; act: 43 ),
  ( sym: 296; act: 44 ),
  ( sym: 297; act: 45 ),
  ( sym: 298; act: 46 ),
  ( sym: 269; act: -29 ),
  ( sym: 289; act: -29 ),
{ 51: }
  ( sym: 271; act: 102 ),
{ 52: }
  ( sym: 272; act: 103 ),
  ( sym: 289; act: 104 ),
{ 53: }
  ( sym: 294; act: 42 ),
  ( sym: 295; act: 43 ),
  ( sym: 296; act: 44 ),
  ( sym: 297; act: 45 ),
  ( sym: 298; act: 46 ),
  ( sym: 272; act: -31 ),
  ( sym: 289; act: -31 ),
{ 54: }
  ( sym: 276; act: 105 ),
  ( sym: 272; act: -11 ),
  ( sym: 289; act: -11 ),
  ( sym: 294; act: -11 ),
  ( sym: 295; act: -11 ),
  ( sym: 296; act: -11 ),
  ( sym: 297; act: -11 ),
  ( sym: 298; act: -11 ),
{ 55: }
{ 56: }
{ 57: }
  ( sym: 259; act: 14 ),
  ( sym: 260; act: 15 ),
  ( sym: 261; act: 16 ),
  ( sym: 262; act: 17 ),
  ( sym: 265; act: 30 ),
  ( sym: 266; act: 18 ),
  ( sym: 267; act: 31 ),
  ( sym: 268; act: 19 ),
  ( sym: 270; act: 20 ),
  ( sym: 301; act: 21 ),
  ( sym: 302; act: 22 ),
{ 58: }
  ( sym: 259; act: 14 ),
  ( sym: 260; act: 15 ),
  ( sym: 261; act: 16 ),
  ( sym: 262; act: 17 ),
  ( sym: 265; act: 30 ),
  ( sym: 266; act: 18 ),
  ( sym: 267; act: 31 ),
  ( sym: 268; act: 19 ),
  ( sym: 270; act: 20 ),
  ( sym: 301; act: 21 ),
  ( sym: 302; act: 22 ),
{ 59: }
  ( sym: 259; act: 14 ),
  ( sym: 260; act: 15 ),
  ( sym: 261; act: 16 ),
  ( sym: 262; act: 17 ),
  ( sym: 265; act: 30 ),
  ( sym: 266; act: 18 ),
  ( sym: 267; act: 31 ),
  ( sym: 268; act: 19 ),
  ( sym: 270; act: 20 ),
  ( sym: 301; act: 21 ),
  ( sym: 302; act: 22 ),
{ 60: }
  ( sym: 259; act: 14 ),
  ( sym: 260; act: 15 ),
  ( sym: 261; act: 16 ),
  ( sym: 262; act: 17 ),
  ( sym: 265; act: 30 ),
  ( sym: 266; act: 18 ),
  ( sym: 267; act: 31 ),
  ( sym: 268; act: 19 ),
  ( sym: 270; act: 20 ),
  ( sym: 301; act: 21 ),
  ( sym: 302; act: 22 ),
{ 61: }
  ( sym: 259; act: 14 ),
  ( sym: 260; act: 15 ),
  ( sym: 261; act: 16 ),
  ( sym: 262; act: 17 ),
  ( sym: 265; act: 30 ),
  ( sym: 266; act: 18 ),
  ( sym: 267; act: 31 ),
  ( sym: 268; act: 19 ),
  ( sym: 270; act: 20 ),
  ( sym: 301; act: 21 ),
  ( sym: 302; act: 22 ),
{ 62: }
  ( sym: 259; act: 14 ),
  ( sym: 260; act: 15 ),
  ( sym: 261; act: 16 ),
  ( sym: 262; act: 17 ),
  ( sym: 265; act: 30 ),
  ( sym: 266; act: 18 ),
  ( sym: 267; act: 31 ),
  ( sym: 268; act: 19 ),
  ( sym: 270; act: 20 ),
  ( sym: 301; act: 21 ),
  ( sym: 302; act: 22 ),
{ 63: }
  ( sym: 259; act: 14 ),
  ( sym: 260; act: 15 ),
  ( sym: 261; act: 16 ),
  ( sym: 262; act: 17 ),
  ( sym: 265; act: 30 ),
  ( sym: 266; act: 18 ),
  ( sym: 267; act: 31 ),
  ( sym: 268; act: 19 ),
  ( sym: 270; act: 20 ),
  ( sym: 301; act: 21 ),
  ( sym: 302; act: 22 ),
{ 64: }
  ( sym: 259; act: 14 ),
  ( sym: 260; act: 15 ),
  ( sym: 261; act: 16 ),
  ( sym: 262; act: 17 ),
  ( sym: 265; act: 30 ),
  ( sym: 266; act: 18 ),
  ( sym: 267; act: 31 ),
  ( sym: 268; act: 19 ),
  ( sym: 270; act: 20 ),
  ( sym: 301; act: 21 ),
  ( sym: 302; act: 22 ),
{ 65: }
  ( sym: 268; act: 70 ),
  ( sym: 301; act: 72 ),
{ 66: }
  ( sym: 268; act: 70 ),
  ( sym: 301; act: 72 ),
{ 67: }
  ( sym: 268; act: 70 ),
  ( sym: 301; act: 72 ),
{ 68: }
  ( sym: 268; act: 70 ),
  ( sym: 301; act: 72 ),
{ 69: }
  ( sym: 290; act: 65 ),
  ( sym: 291; act: 66 ),
  ( sym: 292; act: 67 ),
  ( sym: 293; act: 68 ),
  ( sym: 258; act: -34 ),
  ( sym: 272; act: -34 ),
{ 70: }
  ( sym: 259; act: 14 ),
  ( sym: 260; act: 15 ),
  ( sym: 261; act: 16 ),
  ( sym: 262; act: 17 ),
  ( sym: 265; act: 30 ),
  ( sym: 266; act: 18 ),
  ( sym: 267; act: 31 ),
  ( sym: 268; act: 32 ),
  ( sym: 270; act: 20 ),
  ( sym: 301; act: 35 ),
  ( sym: 302; act: 22 ),
{ 71: }
  ( sym: 283; act: 33 ),
  ( sym: 284; act: 34 ),
{ 72: }
  ( sym: 268; act: 70 ),
  ( sym: 301; act: 72 ),
{ 73: }
{ 74: }
  ( sym: 259; act: 14 ),
  ( sym: 260; act: 15 ),
  ( sym: 261; act: 16 ),
  ( sym: 262; act: 17 ),
  ( sym: 266; act: 18 ),
  ( sym: 268; act: 19 ),
  ( sym: 270; act: 20 ),
  ( sym: 301; act: 21 ),
  ( sym: 302; act: 22 ),
{ 75: }
  ( sym: 259; act: 14 ),
  ( sym: 260; act: 15 ),
  ( sym: 261; act: 16 ),
  ( sym: 262; act: 17 ),
  ( sym: 266; act: 18 ),
  ( sym: 268; act: 19 ),
  ( sym: 270; act: 20 ),
  ( sym: 301; act: 21 ),
  ( sym: 302; act: 22 ),
{ 76: }
  ( sym: 259; act: 14 ),
  ( sym: 260; act: 15 ),
  ( sym: 261; act: 16 ),
  ( sym: 262; act: 17 ),
  ( sym: 266; act: 18 ),
  ( sym: 268; act: 19 ),
  ( sym: 270; act: 20 ),
  ( sym: 301; act: 21 ),
  ( sym: 302; act: 22 ),
{ 77: }
  ( sym: 259; act: 14 ),
  ( sym: 260; act: 15 ),
  ( sym: 261; act: 16 ),
  ( sym: 262; act: 17 ),
  ( sym: 266; act: 18 ),
  ( sym: 268; act: 19 ),
  ( sym: 270; act: 20 ),
  ( sym: 301; act: 21 ),
  ( sym: 302; act: 22 ),
{ 78: }
  ( sym: 259; act: 14 ),
  ( sym: 260; act: 15 ),
  ( sym: 261; act: 16 ),
  ( sym: 262; act: 17 ),
  ( sym: 266; act: 18 ),
  ( sym: 268; act: 19 ),
  ( sym: 270; act: 20 ),
  ( sym: 301; act: 21 ),
  ( sym: 302; act: 22 ),
{ 79: }
  ( sym: 259; act: 14 ),
  ( sym: 260; act: 15 ),
  ( sym: 261; act: 16 ),
  ( sym: 262; act: 17 ),
  ( sym: 265; act: 30 ),
  ( sym: 266; act: 18 ),
  ( sym: 267; act: 31 ),
  ( sym: 268; act: 19 ),
  ( sym: 270; act: 20 ),
  ( sym: 275; act: 129 ),
  ( sym: 301; act: 21 ),
  ( sym: 302; act: 22 ),
{ 80: }
  ( sym: 259; act: 14 ),
  ( sym: 260; act: 15 ),
  ( sym: 261; act: 16 ),
  ( sym: 262; act: 17 ),
  ( sym: 265; act: 30 ),
  ( sym: 266; act: 18 ),
  ( sym: 267; act: 31 ),
  ( sym: 268; act: 19 ),
  ( sym: 270; act: 20 ),
  ( sym: 275; act: 132 ),
  ( sym: 301; act: 21 ),
  ( sym: 302; act: 22 ),
{ 81: }
  ( sym: 259; act: 14 ),
  ( sym: 260; act: 15 ),
  ( sym: 261; act: 16 ),
  ( sym: 262; act: 17 ),
  ( sym: 266; act: 18 ),
  ( sym: 268; act: 19 ),
  ( sym: 270; act: 20 ),
  ( sym: 301; act: 21 ),
  ( sym: 302; act: 22 ),
{ 82: }
  ( sym: 269; act: 134 ),
{ 83: }
  ( sym: 269; act: 135 ),
  ( sym: 290; act: 65 ),
  ( sym: 291; act: 66 ),
  ( sym: 292; act: 67 ),
  ( sym: 293; act: 68 ),
{ 84: }
  ( sym: 276; act: 74 ),
  ( sym: 277; act: 75 ),
  ( sym: 278; act: 76 ),
  ( sym: 279; act: 77 ),
  ( sym: 280; act: 78 ),
  ( sym: 281; act: 79 ),
  ( sym: 282; act: 80 ),
  ( sym: 294; act: 42 ),
  ( sym: 295; act: 43 ),
  ( sym: 296; act: 44 ),
  ( sym: 297; act: 45 ),
  ( sym: 298; act: 46 ),
  ( sym: 269; act: -29 ),
  ( sym: 289; act: -29 ),
  ( sym: 285; act: -72 ),
  ( sym: 286; act: -72 ),
  ( sym: 287; act: -72 ),
  ( sym: 288; act: -72 ),
  ( sym: 299; act: -72 ),
  ( sym: 300; act: -72 ),
{ 85: }
{ 86: }
  ( sym: 276; act: 136 ),
  ( sym: 278; act: 137 ),
  ( sym: 279; act: 138 ),
{ 87: }
{ 88: }
{ 89: }
{ 90: }
{ 91: }
{ 92: }
  ( sym: 298; act: 46 ),
  ( sym: 258; act: -14 ),
  ( sym: 268; act: -14 ),
  ( sym: 269; act: -14 ),
  ( sym: 272; act: -14 ),
  ( sym: 276; act: -14 ),
  ( sym: 277; act: -14 ),
  ( sym: 278; act: -14 ),
  ( sym: 279; act: -14 ),
  ( sym: 280; act: -14 ),
  ( sym: 281; act: -14 ),
  ( sym: 282; act: -14 ),
  ( sym: 285; act: -14 ),
  ( sym: 286; act: -14 ),
  ( sym: 287; act: -14 ),
  ( sym: 288; act: -14 ),
  ( sym: 289; act: -14 ),
  ( sym: 294; act: -14 ),
  ( sym: 295; act: -14 ),
  ( sym: 296; act: -14 ),
  ( sym: 297; act: -14 ),
  ( sym: 299; act: -14 ),
  ( sym: 300; act: -14 ),
  ( sym: 301; act: -14 ),
{ 93: }
  ( sym: 298; act: 46 ),
  ( sym: 258; act: -15 ),
  ( sym: 268; act: -15 ),
  ( sym: 269; act: -15 ),
  ( sym: 272; act: -15 ),
  ( sym: 276; act: -15 ),
  ( sym: 277; act: -15 ),
  ( sym: 278; act: -15 ),
  ( sym: 279; act: -15 ),
  ( sym: 280; act: -15 ),
  ( sym: 281; act: -15 ),
  ( sym: 282; act: -15 ),
  ( sym: 285; act: -15 ),
  ( sym: 286; act: -15 ),
  ( sym: 287; act: -15 ),
  ( sym: 288; act: -15 ),
  ( sym: 289; act: -15 ),
  ( sym: 294; act: -15 ),
  ( sym: 295; act: -15 ),
  ( sym: 296; act: -15 ),
  ( sym: 297; act: -15 ),
  ( sym: 299; act: -15 ),
  ( sym: 300; act: -15 ),
  ( sym: 301; act: -15 ),
{ 94: }
  ( sym: 298; act: 46 ),
  ( sym: 258; act: -16 ),
  ( sym: 268; act: -16 ),
  ( sym: 269; act: -16 ),
  ( sym: 272; act: -16 ),
  ( sym: 276; act: -16 ),
  ( sym: 277; act: -16 ),
  ( sym: 278; act: -16 ),
  ( sym: 279; act: -16 ),
  ( sym: 280; act: -16 ),
  ( sym: 281; act: -16 ),
  ( sym: 282; act: -16 ),
  ( sym: 285; act: -16 ),
  ( sym: 286; act: -16 ),
  ( sym: 287; act: -16 ),
  ( sym: 288; act: -16 ),
  ( sym: 289; act: -16 ),
  ( sym: 294; act: -16 ),
  ( sym: 295; act: -16 ),
  ( sym: 296; act: -16 ),
  ( sym: 297; act: -16 ),
  ( sym: 299; act: -16 ),
  ( sym: 300; act: -16 ),
  ( sym: 301; act: -16 ),
{ 95: }
  ( sym: 298; act: 46 ),
  ( sym: 258; act: -17 ),
  ( sym: 268; act: -17 ),
  ( sym: 269; act: -17 ),
  ( sym: 272; act: -17 ),
  ( sym: 276; act: -17 ),
  ( sym: 277; act: -17 ),
  ( sym: 278; act: -17 ),
  ( sym: 279; act: -17 ),
  ( sym: 280; act: -17 ),
  ( sym: 281; act: -17 ),
  ( sym: 282; act: -17 ),
  ( sym: 285; act: -17 ),
  ( sym: 286; act: -17 ),
  ( sym: 287; act: -17 ),
  ( sym: 288; act: -17 ),
  ( sym: 289; act: -17 ),
  ( sym: 294; act: -17 ),
  ( sym: 295; act: -17 ),
  ( sym: 296; act: -17 ),
  ( sym: 297; act: -17 ),
  ( sym: 299; act: -17 ),
  ( sym: 300; act: -17 ),
  ( sym: 301; act: -17 ),
{ 96: }
{ 97: }
  ( sym: 259; act: 14 ),
  ( sym: 260; act: 15 ),
  ( sym: 261; act: 16 ),
  ( sym: 262; act: 17 ),
  ( sym: 266; act: 18 ),
  ( sym: 268; act: 19 ),
  ( sym: 270; act: 20 ),
  ( sym: 301; act: 21 ),
  ( sym: 302; act: 22 ),
{ 98: }
  ( sym: 265; act: 140 ),
{ 99: }
  ( sym: 269; act: 141 ),
  ( sym: 294; act: 42 ),
  ( sym: 295; act: 43 ),
  ( sym: 296; act: 44 ),
  ( sym: 297; act: 45 ),
  ( sym: 298; act: 46 ),
{ 100: }
{ 101: }
  ( sym: 259; act: 14 ),
  ( sym: 260; act: 15 ),
  ( sym: 261; act: 16 ),
  ( sym: 262; act: 17 ),
  ( sym: 266; act: 18 ),
  ( sym: 268; act: 19 ),
  ( sym: 270; act: 20 ),
  ( sym: 301; act: 21 ),
  ( sym: 302; act: 22 ),
{ 102: }
  ( sym: 259; act: 14 ),
  ( sym: 260; act: 15 ),
  ( sym: 261; act: 16 ),
  ( sym: 262; act: 17 ),
  ( sym: 265; act: 30 ),
  ( sym: 266; act: 18 ),
  ( sym: 267; act: 31 ),
  ( sym: 268; act: 32 ),
  ( sym: 270; act: 20 ),
  ( sym: 283; act: 33 ),
  ( sym: 284; act: 34 ),
  ( sym: 301; act: 35 ),
  ( sym: 302; act: 22 ),
{ 103: }
{ 104: }
  ( sym: 259; act: 14 ),
  ( sym: 260; act: 15 ),
  ( sym: 261; act: 16 ),
  ( sym: 262; act: 17 ),
  ( sym: 266; act: 18 ),
  ( sym: 268; act: 19 ),
  ( sym: 270; act: 20 ),
  ( sym: 301; act: 21 ),
  ( sym: 302; act: 22 ),
{ 105: }
  ( sym: 259; act: 8 ),
  ( sym: 268; act: 9 ),
  ( sym: 302; act: 10 ),
{ 106: }
  ( sym: 299; act: 61 ),
  ( sym: 300; act: 62 ),
  ( sym: 258; act: -63 ),
  ( sym: 269; act: -63 ),
  ( sym: 272; act: -63 ),
{ 107: }
{ 108: }
  ( sym: 294; act: 42 ),
  ( sym: 295; act: 43 ),
  ( sym: 296; act: 44 ),
  ( sym: 297; act: 45 ),
  ( sym: 298; act: 46 ),
  ( sym: 258; act: -72 ),
  ( sym: 269; act: -72 ),
  ( sym: 272; act: -72 ),
  ( sym: 281; act: -72 ),
  ( sym: 282; act: -72 ),
  ( sym: 285; act: -72 ),
  ( sym: 286; act: -72 ),
  ( sym: 287; act: -72 ),
  ( sym: 288; act: -72 ),
  ( sym: 299; act: -72 ),
  ( sym: 300; act: -72 ),
{ 109: }
  ( sym: 299; act: 61 ),
  ( sym: 300; act: 62 ),
  ( sym: 258; act: -64 ),
  ( sym: 269; act: -64 ),
  ( sym: 272; act: -64 ),
{ 110: }
  ( sym: 299; act: 61 ),
  ( sym: 300; act: 62 ),
  ( sym: 258; act: -65 ),
  ( sym: 269; act: -65 ),
  ( sym: 272; act: -65 ),
{ 111: }
  ( sym: 299; act: 61 ),
  ( sym: 300; act: 62 ),
  ( sym: 258; act: -66 ),
  ( sym: 269; act: -66 ),
  ( sym: 272; act: -66 ),
{ 112: }
{ 113: }
{ 114: }
  ( sym: 299; act: 61 ),
  ( sym: 300; act: 62 ),
  ( sym: 258; act: -61 ),
  ( sym: 269; act: -61 ),
  ( sym: 272; act: -61 ),
{ 115: }
  ( sym: 299; act: 61 ),
  ( sym: 300; act: 62 ),
  ( sym: 258; act: -62 ),
  ( sym: 269; act: -62 ),
  ( sym: 272; act: -62 ),
{ 116: }
{ 117: }
{ 118: }
{ 119: }
{ 120: }
{ 121: }
  ( sym: 294; act: 42 ),
  ( sym: 295; act: 43 ),
  ( sym: 296; act: 44 ),
  ( sym: 297; act: 45 ),
  ( sym: 298; act: 46 ),
  ( sym: 258; act: -50 ),
  ( sym: 269; act: -50 ),
  ( sym: 272; act: -50 ),
{ 122: }
  ( sym: 294; act: 42 ),
  ( sym: 295; act: 43 ),
  ( sym: 296; act: 44 ),
  ( sym: 297; act: 45 ),
  ( sym: 298; act: 46 ),
  ( sym: 258; act: -51 ),
  ( sym: 269; act: -51 ),
  ( sym: 272; act: -51 ),
{ 123: }
  ( sym: 294; act: 42 ),
  ( sym: 295; act: 43 ),
  ( sym: 296; act: 44 ),
  ( sym: 297; act: 45 ),
  ( sym: 298; act: 46 ),
  ( sym: 258; act: -52 ),
  ( sym: 269; act: -52 ),
  ( sym: 272; act: -52 ),
{ 124: }
  ( sym: 294; act: 42 ),
  ( sym: 295; act: 43 ),
  ( sym: 296; act: 44 ),
  ( sym: 297; act: 45 ),
  ( sym: 298; act: 46 ),
  ( sym: 258; act: -53 ),
  ( sym: 269; act: -53 ),
  ( sym: 272; act: -53 ),
{ 125: }
  ( sym: 294; act: 42 ),
  ( sym: 295; act: 43 ),
  ( sym: 296; act: 44 ),
  ( sym: 297; act: 45 ),
  ( sym: 298; act: 46 ),
  ( sym: 258; act: -54 ),
  ( sym: 269; act: -54 ),
  ( sym: 272; act: -54 ),
{ 126: }
  ( sym: 299; act: 61 ),
  ( sym: 300; act: 62 ),
{ 127: }
  ( sym: 258; act: -59 ),
  ( sym: 269; act: -59 ),
  ( sym: 272; act: -59 ),
  ( sym: 299; act: -71 ),
  ( sym: 300; act: -71 ),
{ 128: }
  ( sym: 294; act: 42 ),
  ( sym: 295; act: 43 ),
  ( sym: 296; act: 44 ),
  ( sym: 297; act: 45 ),
  ( sym: 298; act: 46 ),
  ( sym: 258; act: -55 ),
  ( sym: 269; act: -55 ),
  ( sym: 272; act: -55 ),
  ( sym: 299; act: -72 ),
  ( sym: 300; act: -72 ),
{ 129: }
{ 130: }
  ( sym: 258; act: -60 ),
  ( sym: 269; act: -60 ),
  ( sym: 272; act: -60 ),
  ( sym: 299; act: -71 ),
  ( sym: 300; act: -71 ),
{ 131: }
  ( sym: 294; act: 42 ),
  ( sym: 295; act: 43 ),
  ( sym: 296; act: 44 ),
  ( sym: 297; act: 45 ),
  ( sym: 298; act: 46 ),
  ( sym: 258; act: -56 ),
  ( sym: 269; act: -56 ),
  ( sym: 272; act: -56 ),
  ( sym: 299; act: -72 ),
  ( sym: 300; act: -72 ),
{ 132: }
{ 133: }
  ( sym: 269; act: 146 ),
  ( sym: 294; act: 42 ),
  ( sym: 295; act: 43 ),
  ( sym: 296; act: 44 ),
  ( sym: 297; act: 45 ),
  ( sym: 298; act: 46 ),
{ 134: }
{ 135: }
{ 136: }
  ( sym: 259; act: 14 ),
  ( sym: 260; act: 15 ),
  ( sym: 261; act: 16 ),
  ( sym: 262; act: 17 ),
  ( sym: 266; act: 18 ),
  ( sym: 268; act: 19 ),
  ( sym: 270; act: 20 ),
  ( sym: 301; act: 21 ),
  ( sym: 302; act: 22 ),
{ 137: }
  ( sym: 259; act: 14 ),
  ( sym: 260; act: 15 ),
  ( sym: 261; act: 16 ),
  ( sym: 262; act: 17 ),
  ( sym: 266; act: 18 ),
  ( sym: 268; act: 19 ),
  ( sym: 270; act: 20 ),
  ( sym: 301; act: 21 ),
  ( sym: 302; act: 22 ),
{ 138: }
  ( sym: 259; act: 14 ),
  ( sym: 260; act: 15 ),
  ( sym: 261; act: 16 ),
  ( sym: 262; act: 17 ),
  ( sym: 266; act: 18 ),
  ( sym: 268; act: 19 ),
  ( sym: 270; act: 20 ),
  ( sym: 301; act: 21 ),
  ( sym: 302; act: 22 ),
{ 139: }
  ( sym: 269; act: 150 ),
  ( sym: 294; act: 42 ),
  ( sym: 295; act: 43 ),
  ( sym: 296; act: 44 ),
  ( sym: 297; act: 45 ),
  ( sym: 298; act: 46 ),
{ 140: }
  ( sym: 274; act: 151 ),
{ 141: }
{ 142: }
  ( sym: 294; act: 42 ),
  ( sym: 295; act: 43 ),
  ( sym: 296; act: 44 ),
  ( sym: 297; act: 45 ),
  ( sym: 298; act: 46 ),
  ( sym: 269; act: -30 ),
  ( sym: 289; act: -30 ),
{ 143: }
  ( sym: 272; act: 152 ),
{ 144: }
  ( sym: 294; act: 42 ),
  ( sym: 295; act: 43 ),
  ( sym: 296; act: 44 ),
  ( sym: 297; act: 45 ),
  ( sym: 298; act: 46 ),
  ( sym: 272; act: -32 ),
  ( sym: 289; act: -32 ),
{ 145: }
  ( sym: 298; act: 38 ),
  ( sym: 271; act: -33 ),
{ 146: }
{ 147: }
  ( sym: 294; act: 42 ),
  ( sym: 295; act: 43 ),
  ( sym: 296; act: 44 ),
  ( sym: 297; act: 45 ),
  ( sym: 298; act: 46 ),
  ( sym: 268; act: -40 ),
  ( sym: 289; act: -40 ),
  ( sym: 301; act: -40 ),
{ 148: }
  ( sym: 294; act: 42 ),
  ( sym: 295; act: 43 ),
  ( sym: 296; act: 44 ),
  ( sym: 297; act: 45 ),
  ( sym: 298; act: 46 ),
  ( sym: 268; act: -41 ),
  ( sym: 289; act: -41 ),
  ( sym: 301; act: -41 ),
{ 149: }
  ( sym: 294; act: 42 ),
  ( sym: 295; act: 43 ),
  ( sym: 296; act: 44 ),
  ( sym: 297; act: 45 ),
  ( sym: 298; act: 46 ),
  ( sym: 268; act: -42 ),
  ( sym: 289; act: -42 ),
  ( sym: 301; act: -42 ),
{ 150: }
{ 151: }
  ( sym: 268; act: 153 ),
{ 152: }
{ 153: }
  ( sym: 259; act: 14 ),
  ( sym: 260; act: 15 ),
  ( sym: 261; act: 16 ),
  ( sym: 262; act: 17 ),
  ( sym: 266; act: 18 ),
  ( sym: 268; act: 19 ),
  ( sym: 270; act: 20 ),
  ( sym: 301; act: 21 ),
  ( sym: 302; act: 22 ),
{ 154: }
  ( sym: 269; act: 155 ),
  ( sym: 294; act: 42 ),
  ( sym: 295; act: 43 ),
  ( sym: 296; act: 44 ),
  ( sym: 297; act: 45 ),
  ( sym: 298; act: 46 )
{ 155: }
);

yyg : array [1..yyngotos] of YYARec = (
{ 0: }
  ( sym: -10; act: 1 ),
{ 1: }
{ 2: }
  ( sym: -3; act: 6 ),
  ( sym: -2; act: 7 ),
{ 3: }
  ( sym: -8; act: 11 ),
  ( sym: -5; act: 12 ),
  ( sym: -4; act: 13 ),
{ 4: }
  ( sym: -17; act: 23 ),
  ( sym: -16; act: 24 ),
  ( sym: -14; act: 25 ),
  ( sym: -13; act: 26 ),
  ( sym: -12; act: 27 ),
  ( sym: -11; act: 28 ),
  ( sym: -8; act: 11 ),
  ( sym: -5; act: 12 ),
  ( sym: -4; act: 29 ),
{ 5: }
  ( sym: -17; act: 23 ),
  ( sym: -16; act: 24 ),
  ( sym: -14; act: 25 ),
  ( sym: -13; act: 26 ),
  ( sym: -12; act: 27 ),
  ( sym: -11; act: 36 ),
  ( sym: -8; act: 11 ),
  ( sym: -5; act: 12 ),
  ( sym: -4; act: 29 ),
{ 6: }
{ 7: }
{ 8: }
{ 9: }
  ( sym: -3; act: 6 ),
  ( sym: -2; act: 39 ),
{ 10: }
  ( sym: -3; act: 40 ),
{ 11: }
{ 12: }
{ 13: }
{ 14: }
{ 15: }
{ 16: }
{ 17: }
{ 18: }
{ 19: }
  ( sym: -9; act: 49 ),
  ( sym: -8; act: 11 ),
  ( sym: -5; act: 12 ),
  ( sym: -4; act: 50 ),
{ 20: }
  ( sym: -8; act: 11 ),
  ( sym: -7; act: 51 ),
  ( sym: -6; act: 52 ),
  ( sym: -5; act: 12 ),
  ( sym: -4; act: 53 ),
{ 21: }
  ( sym: -8; act: 11 ),
  ( sym: -5; act: 12 ),
  ( sym: -4; act: 55 ),
{ 22: }
  ( sym: -5; act: 56 ),
{ 23: }
{ 24: }
{ 25: }
{ 26: }
{ 27: }
  ( sym: -13; act: 69 ),
{ 28: }
{ 29: }
{ 30: }
{ 31: }
{ 32: }
  ( sym: -17; act: 23 ),
  ( sym: -16; act: 24 ),
  ( sym: -14; act: 82 ),
  ( sym: -13; act: 83 ),
  ( sym: -9; act: 49 ),
  ( sym: -8; act: 11 ),
  ( sym: -5; act: 12 ),
  ( sym: -4; act: 84 ),
{ 33: }
  ( sym: -15; act: 85 ),
{ 34: }
  ( sym: -15; act: 87 ),
{ 35: }
  ( sym: -13; act: 88 ),
  ( sym: -8; act: 11 ),
  ( sym: -5; act: 12 ),
  ( sym: -4; act: 55 ),
{ 36: }
{ 37: }
{ 38: }
  ( sym: -3; act: 6 ),
  ( sym: -2; act: 90 ),
{ 39: }
{ 40: }
{ 41: }
{ 42: }
  ( sym: -8; act: 11 ),
  ( sym: -5; act: 12 ),
  ( sym: -4; act: 92 ),
{ 43: }
  ( sym: -8; act: 11 ),
  ( sym: -5; act: 12 ),
  ( sym: -4; act: 93 ),
{ 44: }
  ( sym: -8; act: 11 ),
  ( sym: -5; act: 12 ),
  ( sym: -4; act: 94 ),
{ 45: }
  ( sym: -8; act: 11 ),
  ( sym: -5; act: 12 ),
  ( sym: -4; act: 95 ),
{ 46: }
  ( sym: -8; act: 11 ),
  ( sym: -5; act: 12 ),
  ( sym: -4; act: 96 ),
{ 47: }
{ 48: }
  ( sym: -8; act: 11 ),
  ( sym: -5; act: 12 ),
  ( sym: -4; act: 99 ),
{ 49: }
{ 50: }
{ 51: }
{ 52: }
{ 53: }
{ 54: }
{ 55: }
{ 56: }
{ 57: }
  ( sym: -17; act: 106 ),
  ( sym: -16; act: 107 ),
  ( sym: -8; act: 11 ),
  ( sym: -5; act: 12 ),
  ( sym: -4; act: 108 ),
{ 58: }
  ( sym: -17; act: 109 ),
  ( sym: -16; act: 107 ),
  ( sym: -8; act: 11 ),
  ( sym: -5; act: 12 ),
  ( sym: -4; act: 108 ),
{ 59: }
  ( sym: -17; act: 110 ),
  ( sym: -16; act: 107 ),
  ( sym: -8; act: 11 ),
  ( sym: -5; act: 12 ),
  ( sym: -4; act: 108 ),
{ 60: }
  ( sym: -17; act: 111 ),
  ( sym: -16; act: 107 ),
  ( sym: -8; act: 11 ),
  ( sym: -5; act: 12 ),
  ( sym: -4; act: 108 ),
{ 61: }
  ( sym: -17; act: 112 ),
  ( sym: -16; act: 107 ),
  ( sym: -8; act: 11 ),
  ( sym: -5; act: 12 ),
  ( sym: -4; act: 108 ),
{ 62: }
  ( sym: -17; act: 113 ),
  ( sym: -16; act: 107 ),
  ( sym: -8; act: 11 ),
  ( sym: -5; act: 12 ),
  ( sym: -4; act: 108 ),
{ 63: }
  ( sym: -17; act: 114 ),
  ( sym: -16; act: 107 ),
  ( sym: -8; act: 11 ),
  ( sym: -5; act: 12 ),
  ( sym: -4; act: 108 ),
{ 64: }
  ( sym: -17; act: 115 ),
  ( sym: -16; act: 107 ),
  ( sym: -8; act: 11 ),
  ( sym: -5; act: 12 ),
  ( sym: -4; act: 108 ),
{ 65: }
  ( sym: -13; act: 116 ),
{ 66: }
  ( sym: -13; act: 117 ),
{ 67: }
  ( sym: -13; act: 118 ),
{ 68: }
  ( sym: -13; act: 119 ),
{ 69: }
{ 70: }
  ( sym: -17; act: 23 ),
  ( sym: -16; act: 24 ),
  ( sym: -14; act: 82 ),
  ( sym: -13; act: 83 ),
  ( sym: -8; act: 11 ),
  ( sym: -5; act: 12 ),
  ( sym: -4; act: 29 ),
{ 71: }
  ( sym: -12; act: 120 ),
{ 72: }
  ( sym: -13; act: 88 ),
{ 73: }
{ 74: }
  ( sym: -8; act: 11 ),
  ( sym: -5; act: 12 ),
  ( sym: -4; act: 121 ),
{ 75: }
  ( sym: -8; act: 11 ),
  ( sym: -5; act: 12 ),
  ( sym: -4; act: 122 ),
{ 76: }
  ( sym: -8; act: 11 ),
  ( sym: -5; act: 12 ),
  ( sym: -4; act: 123 ),
{ 77: }
  ( sym: -8; act: 11 ),
  ( sym: -5; act: 12 ),
  ( sym: -4; act: 124 ),
{ 78: }
  ( sym: -8; act: 11 ),
  ( sym: -5; act: 12 ),
  ( sym: -4; act: 125 ),
{ 79: }
  ( sym: -17; act: 126 ),
  ( sym: -16; act: 127 ),
  ( sym: -8; act: 11 ),
  ( sym: -5; act: 12 ),
  ( sym: -4; act: 128 ),
{ 80: }
  ( sym: -17; act: 126 ),
  ( sym: -16; act: 130 ),
  ( sym: -8; act: 11 ),
  ( sym: -5; act: 12 ),
  ( sym: -4; act: 131 ),
{ 81: }
  ( sym: -8; act: 11 ),
  ( sym: -5; act: 12 ),
  ( sym: -4; act: 133 ),
{ 82: }
{ 83: }
{ 84: }
{ 85: }
{ 86: }
{ 87: }
{ 88: }
{ 89: }
{ 90: }
{ 91: }
{ 92: }
{ 93: }
{ 94: }
{ 95: }
{ 96: }
{ 97: }
  ( sym: -8; act: 11 ),
  ( sym: -5; act: 12 ),
  ( sym: -4; act: 139 ),
{ 98: }
{ 99: }
{ 100: }
{ 101: }
  ( sym: -8; act: 11 ),
  ( sym: -5; act: 12 ),
  ( sym: -4; act: 142 ),
{ 102: }
  ( sym: -17; act: 23 ),
  ( sym: -16; act: 24 ),
  ( sym: -14; act: 25 ),
  ( sym: -13; act: 26 ),
  ( sym: -12; act: 27 ),
  ( sym: -11; act: 143 ),
  ( sym: -8; act: 11 ),
  ( sym: -5; act: 12 ),
  ( sym: -4; act: 29 ),
{ 103: }
{ 104: }
  ( sym: -8; act: 11 ),
  ( sym: -5; act: 12 ),
  ( sym: -4; act: 144 ),
{ 105: }
  ( sym: -3; act: 6 ),
  ( sym: -2; act: 145 ),
{ 106: }
{ 107: }
{ 108: }
{ 109: }
{ 110: }
{ 111: }
{ 112: }
{ 113: }
{ 114: }
{ 115: }
{ 116: }
{ 117: }
{ 118: }
{ 119: }
{ 120: }
{ 121: }
{ 122: }
{ 123: }
{ 124: }
{ 125: }
{ 126: }
{ 127: }
{ 128: }
{ 129: }
{ 130: }
{ 131: }
{ 132: }
{ 133: }
{ 134: }
{ 135: }
{ 136: }
  ( sym: -8; act: 11 ),
  ( sym: -5; act: 12 ),
  ( sym: -4; act: 147 ),
{ 137: }
  ( sym: -8; act: 11 ),
  ( sym: -5; act: 12 ),
  ( sym: -4; act: 148 ),
{ 138: }
  ( sym: -8; act: 11 ),
  ( sym: -5; act: 12 ),
  ( sym: -4; act: 149 ),
{ 139: }
{ 140: }
{ 141: }
{ 142: }
{ 143: }
{ 144: }
{ 145: }
{ 146: }
{ 147: }
{ 148: }
{ 149: }
{ 150: }
{ 151: }
{ 152: }
{ 153: }
  ( sym: -8; act: 11 ),
  ( sym: -5; act: 12 ),
  ( sym: -4; act: 154 )
{ 154: }
{ 155: }
);

yyd : array [0..yynstates-1] of Integer = (
{ 0: } 0,
{ 1: } 0,
{ 2: } 0,
{ 3: } 0,
{ 4: } 0,
{ 5: } 0,
{ 6: } -7,
{ 7: } 0,
{ 8: } -5,
{ 9: } 0,
{ 10: } 0,
{ 11: } -21,
{ 12: } -20,
{ 13: } 0,
{ 14: } -10,
{ 15: } -12,
{ 16: } -13,
{ 17: } -11,
{ 18: } 0,
{ 19: } 0,
{ 20: } 0,
{ 21: } 0,
{ 22: } 0,
{ 23: } 0,
{ 24: } 0,
{ 25: } -36,
{ 26: } 0,
{ 27: } 0,
{ 28: } 0,
{ 29: } 0,
{ 30: } -68,
{ 31: } 0,
{ 32: } 0,
{ 33: } 0,
{ 34: } 0,
{ 35: } 0,
{ 36: } 0,
{ 37: } -1,
{ 38: } 0,
{ 39: } 0,
{ 40: } -8,
{ 41: } -2,
{ 42: } 0,
{ 43: } 0,
{ 44: } 0,
{ 45: } 0,
{ 46: } 0,
{ 47: } 0,
{ 48: } 0,
{ 49: } 0,
{ 50: } 0,
{ 51: } 0,
{ 52: } 0,
{ 53: } 0,
{ 54: } 0,
{ 55: } -19,
{ 56: } -24,
{ 57: } 0,
{ 58: } 0,
{ 59: } 0,
{ 60: } 0,
{ 61: } 0,
{ 62: } 0,
{ 63: } 0,
{ 64: } 0,
{ 65: } 0,
{ 66: } 0,
{ 67: } 0,
{ 68: } 0,
{ 69: } 0,
{ 70: } 0,
{ 71: } 0,
{ 72: } 0,
{ 73: } -3,
{ 74: } 0,
{ 75: } 0,
{ 76: } 0,
{ 77: } 0,
{ 78: } 0,
{ 79: } 0,
{ 80: } 0,
{ 81: } 0,
{ 82: } 0,
{ 83: } 0,
{ 84: } 0,
{ 85: } -37,
{ 86: } 0,
{ 87: } -38,
{ 88: } -45,
{ 89: } -4,
{ 90: } -6,
{ 91: } -9,
{ 92: } 0,
{ 93: } 0,
{ 94: } 0,
{ 95: } 0,
{ 96: } -18,
{ 97: } 0,
{ 98: } 0,
{ 99: } 0,
{ 100: } -25,
{ 101: } 0,
{ 102: } 0,
{ 103: } -22,
{ 104: } 0,
{ 105: } 0,
{ 106: } 0,
{ 107: } -71,
{ 108: } 0,
{ 109: } 0,
{ 110: } 0,
{ 111: } 0,
{ 112: } -69,
{ 113: } -70,
{ 114: } 0,
{ 115: } 0,
{ 116: } -46,
{ 117: } -47,
{ 118: } -48,
{ 119: } -49,
{ 120: } -39,
{ 121: } 0,
{ 122: } 0,
{ 123: } 0,
{ 124: } 0,
{ 125: } 0,
{ 126: } 0,
{ 127: } 0,
{ 128: } 0,
{ 129: } -57,
{ 130: } 0,
{ 131: } 0,
{ 132: } -58,
{ 133: } 0,
{ 134: } -43,
{ 135: } -44,
{ 136: } 0,
{ 137: } 0,
{ 138: } 0,
{ 139: } 0,
{ 140: } 0,
{ 141: } -26,
{ 142: } 0,
{ 143: } 0,
{ 144: } 0,
{ 145: } 0,
{ 146: } -67,
{ 147: } 0,
{ 148: } 0,
{ 149: } 0,
{ 150: } -27,
{ 151: } 0,
{ 152: } -23,
{ 153: } 0,
{ 154: } 0,
{ 155: } -28
);

yyal : array [0..yynstates-1] of Integer = (
{ 0: } 1,
{ 1: } 5,
{ 2: } 6,
{ 3: } 9,
{ 4: } 18,
{ 5: } 31,
{ 6: } 44,
{ 7: } 44,
{ 8: } 46,
{ 9: } 46,
{ 10: } 49,
{ 11: } 51,
{ 12: } 51,
{ 13: } 51,
{ 14: } 57,
{ 15: } 57,
{ 16: } 57,
{ 17: } 57,
{ 18: } 57,
{ 19: } 59,
{ 20: } 68,
{ 21: } 77,
{ 22: } 86,
{ 23: } 88,
{ 24: } 94,
{ 25: } 102,
{ 26: } 102,
{ 27: } 108,
{ 28: } 111,
{ 29: } 112,
{ 30: } 130,
{ 31: } 130,
{ 32: } 131,
{ 33: } 142,
{ 34: } 143,
{ 35: } 144,
{ 36: } 153,
{ 37: } 154,
{ 38: } 154,
{ 39: } 157,
{ 40: } 159,
{ 41: } 159,
{ 42: } 159,
{ 43: } 168,
{ 44: } 177,
{ 45: } 186,
{ 46: } 195,
{ 47: } 204,
{ 48: } 206,
{ 49: } 215,
{ 50: } 217,
{ 51: } 224,
{ 52: } 225,
{ 53: } 227,
{ 54: } 234,
{ 55: } 242,
{ 56: } 242,
{ 57: } 242,
{ 58: } 253,
{ 59: } 264,
{ 60: } 275,
{ 61: } 286,
{ 62: } 297,
{ 63: } 308,
{ 64: } 319,
{ 65: } 330,
{ 66: } 332,
{ 67: } 334,
{ 68: } 336,
{ 69: } 338,
{ 70: } 344,
{ 71: } 355,
{ 72: } 357,
{ 73: } 359,
{ 74: } 359,
{ 75: } 368,
{ 76: } 377,
{ 77: } 386,
{ 78: } 395,
{ 79: } 404,
{ 80: } 416,
{ 81: } 428,
{ 82: } 437,
{ 83: } 438,
{ 84: } 443,
{ 85: } 463,
{ 86: } 463,
{ 87: } 466,
{ 88: } 466,
{ 89: } 466,
{ 90: } 466,
{ 91: } 466,
{ 92: } 466,
{ 93: } 490,
{ 94: } 514,
{ 95: } 538,
{ 96: } 562,
{ 97: } 562,
{ 98: } 571,
{ 99: } 572,
{ 100: } 578,
{ 101: } 578,
{ 102: } 587,
{ 103: } 600,
{ 104: } 600,
{ 105: } 609,
{ 106: } 612,
{ 107: } 617,
{ 108: } 617,
{ 109: } 633,
{ 110: } 638,
{ 111: } 643,
{ 112: } 648,
{ 113: } 648,
{ 114: } 648,
{ 115: } 653,
{ 116: } 658,
{ 117: } 658,
{ 118: } 658,
{ 119: } 658,
{ 120: } 658,
{ 121: } 658,
{ 122: } 666,
{ 123: } 674,
{ 124: } 682,
{ 125: } 690,
{ 126: } 698,
{ 127: } 700,
{ 128: } 705,
{ 129: } 715,
{ 130: } 715,
{ 131: } 720,
{ 132: } 730,
{ 133: } 730,
{ 134: } 736,
{ 135: } 736,
{ 136: } 736,
{ 137: } 745,
{ 138: } 754,
{ 139: } 763,
{ 140: } 769,
{ 141: } 770,
{ 142: } 770,
{ 143: } 777,
{ 144: } 778,
{ 145: } 785,
{ 146: } 787,
{ 147: } 787,
{ 148: } 795,
{ 149: } 803,
{ 150: } 811,
{ 151: } 811,
{ 152: } 812,
{ 153: } 812,
{ 154: } 821,
{ 155: } 827
);

yyah : array [0..yynstates-1] of Integer = (
{ 0: } 4,
{ 1: } 5,
{ 2: } 8,
{ 3: } 17,
{ 4: } 30,
{ 5: } 43,
{ 6: } 43,
{ 7: } 45,
{ 8: } 45,
{ 9: } 48,
{ 10: } 50,
{ 11: } 50,
{ 12: } 50,
{ 13: } 56,
{ 14: } 56,
{ 15: } 56,
{ 16: } 56,
{ 17: } 56,
{ 18: } 58,
{ 19: } 67,
{ 20: } 76,
{ 21: } 85,
{ 22: } 87,
{ 23: } 93,
{ 24: } 101,
{ 25: } 101,
{ 26: } 107,
{ 27: } 110,
{ 28: } 111,
{ 29: } 129,
{ 30: } 129,
{ 31: } 130,
{ 32: } 141,
{ 33: } 142,
{ 34: } 143,
{ 35: } 152,
{ 36: } 153,
{ 37: } 153,
{ 38: } 156,
{ 39: } 158,
{ 40: } 158,
{ 41: } 158,
{ 42: } 167,
{ 43: } 176,
{ 44: } 185,
{ 45: } 194,
{ 46: } 203,
{ 47: } 205,
{ 48: } 214,
{ 49: } 216,
{ 50: } 223,
{ 51: } 224,
{ 52: } 226,
{ 53: } 233,
{ 54: } 241,
{ 55: } 241,
{ 56: } 241,
{ 57: } 252,
{ 58: } 263,
{ 59: } 274,
{ 60: } 285,
{ 61: } 296,
{ 62: } 307,
{ 63: } 318,
{ 64: } 329,
{ 65: } 331,
{ 66: } 333,
{ 67: } 335,
{ 68: } 337,
{ 69: } 343,
{ 70: } 354,
{ 71: } 356,
{ 72: } 358,
{ 73: } 358,
{ 74: } 367,
{ 75: } 376,
{ 76: } 385,
{ 77: } 394,
{ 78: } 403,
{ 79: } 415,
{ 80: } 427,
{ 81: } 436,
{ 82: } 437,
{ 83: } 442,
{ 84: } 462,
{ 85: } 462,
{ 86: } 465,
{ 87: } 465,
{ 88: } 465,
{ 89: } 465,
{ 90: } 465,
{ 91: } 465,
{ 92: } 489,
{ 93: } 513,
{ 94: } 537,
{ 95: } 561,
{ 96: } 561,
{ 97: } 570,
{ 98: } 571,
{ 99: } 577,
{ 100: } 577,
{ 101: } 586,
{ 102: } 599,
{ 103: } 599,
{ 104: } 608,
{ 105: } 611,
{ 106: } 616,
{ 107: } 616,
{ 108: } 632,
{ 109: } 637,
{ 110: } 642,
{ 111: } 647,
{ 112: } 647,
{ 113: } 647,
{ 114: } 652,
{ 115: } 657,
{ 116: } 657,
{ 117: } 657,
{ 118: } 657,
{ 119: } 657,
{ 120: } 657,
{ 121: } 665,
{ 122: } 673,
{ 123: } 681,
{ 124: } 689,
{ 125: } 697,
{ 126: } 699,
{ 127: } 704,
{ 128: } 714,
{ 129: } 714,
{ 130: } 719,
{ 131: } 729,
{ 132: } 729,
{ 133: } 735,
{ 134: } 735,
{ 135: } 735,
{ 136: } 744,
{ 137: } 753,
{ 138: } 762,
{ 139: } 768,
{ 140: } 769,
{ 141: } 769,
{ 142: } 776,
{ 143: } 777,
{ 144: } 784,
{ 145: } 786,
{ 146: } 786,
{ 147: } 794,
{ 148: } 802,
{ 149: } 810,
{ 150: } 810,
{ 151: } 811,
{ 152: } 811,
{ 153: } 820,
{ 154: } 826,
{ 155: } 826
);

yygl : array [0..yynstates-1] of Integer = (
{ 0: } 1,
{ 1: } 2,
{ 2: } 2,
{ 3: } 4,
{ 4: } 7,
{ 5: } 16,
{ 6: } 25,
{ 7: } 25,
{ 8: } 25,
{ 9: } 25,
{ 10: } 27,
{ 11: } 28,
{ 12: } 28,
{ 13: } 28,
{ 14: } 28,
{ 15: } 28,
{ 16: } 28,
{ 17: } 28,
{ 18: } 28,
{ 19: } 28,
{ 20: } 32,
{ 21: } 37,
{ 22: } 40,
{ 23: } 41,
{ 24: } 41,
{ 25: } 41,
{ 26: } 41,
{ 27: } 41,
{ 28: } 42,
{ 29: } 42,
{ 30: } 42,
{ 31: } 42,
{ 32: } 42,
{ 33: } 50,
{ 34: } 51,
{ 35: } 52,
{ 36: } 56,
{ 37: } 56,
{ 38: } 56,
{ 39: } 58,
{ 40: } 58,
{ 41: } 58,
{ 42: } 58,
{ 43: } 61,
{ 44: } 64,
{ 45: } 67,
{ 46: } 70,
{ 47: } 73,
{ 48: } 73,
{ 49: } 76,
{ 50: } 76,
{ 51: } 76,
{ 52: } 76,
{ 53: } 76,
{ 54: } 76,
{ 55: } 76,
{ 56: } 76,
{ 57: } 76,
{ 58: } 81,
{ 59: } 86,
{ 60: } 91,
{ 61: } 96,
{ 62: } 101,
{ 63: } 106,
{ 64: } 111,
{ 65: } 116,
{ 66: } 117,
{ 67: } 118,
{ 68: } 119,
{ 69: } 120,
{ 70: } 120,
{ 71: } 127,
{ 72: } 128,
{ 73: } 129,
{ 74: } 129,
{ 75: } 132,
{ 76: } 135,
{ 77: } 138,
{ 78: } 141,
{ 79: } 144,
{ 80: } 149,
{ 81: } 154,
{ 82: } 157,
{ 83: } 157,
{ 84: } 157,
{ 85: } 157,
{ 86: } 157,
{ 87: } 157,
{ 88: } 157,
{ 89: } 157,
{ 90: } 157,
{ 91: } 157,
{ 92: } 157,
{ 93: } 157,
{ 94: } 157,
{ 95: } 157,
{ 96: } 157,
{ 97: } 157,
{ 98: } 160,
{ 99: } 160,
{ 100: } 160,
{ 101: } 160,
{ 102: } 163,
{ 103: } 172,
{ 104: } 172,
{ 105: } 175,
{ 106: } 177,
{ 107: } 177,
{ 108: } 177,
{ 109: } 177,
{ 110: } 177,
{ 111: } 177,
{ 112: } 177,
{ 113: } 177,
{ 114: } 177,
{ 115: } 177,
{ 116: } 177,
{ 117: } 177,
{ 118: } 177,
{ 119: } 177,
{ 120: } 177,
{ 121: } 177,
{ 122: } 177,
{ 123: } 177,
{ 124: } 177,
{ 125: } 177,
{ 126: } 177,
{ 127: } 177,
{ 128: } 177,
{ 129: } 177,
{ 130: } 177,
{ 131: } 177,
{ 132: } 177,
{ 133: } 177,
{ 134: } 177,
{ 135: } 177,
{ 136: } 177,
{ 137: } 180,
{ 138: } 183,
{ 139: } 186,
{ 140: } 186,
{ 141: } 186,
{ 142: } 186,
{ 143: } 186,
{ 144: } 186,
{ 145: } 186,
{ 146: } 186,
{ 147: } 186,
{ 148: } 186,
{ 149: } 186,
{ 150: } 186,
{ 151: } 186,
{ 152: } 186,
{ 153: } 186,
{ 154: } 189,
{ 155: } 189
);

yygh : array [0..yynstates-1] of Integer = (
{ 0: } 1,
{ 1: } 1,
{ 2: } 3,
{ 3: } 6,
{ 4: } 15,
{ 5: } 24,
{ 6: } 24,
{ 7: } 24,
{ 8: } 24,
{ 9: } 26,
{ 10: } 27,
{ 11: } 27,
{ 12: } 27,
{ 13: } 27,
{ 14: } 27,
{ 15: } 27,
{ 16: } 27,
{ 17: } 27,
{ 18: } 27,
{ 19: } 31,
{ 20: } 36,
{ 21: } 39,
{ 22: } 40,
{ 23: } 40,
{ 24: } 40,
{ 25: } 40,
{ 26: } 40,
{ 27: } 41,
{ 28: } 41,
{ 29: } 41,
{ 30: } 41,
{ 31: } 41,
{ 32: } 49,
{ 33: } 50,
{ 34: } 51,
{ 35: } 55,
{ 36: } 55,
{ 37: } 55,
{ 38: } 57,
{ 39: } 57,
{ 40: } 57,
{ 41: } 57,
{ 42: } 60,
{ 43: } 63,
{ 44: } 66,
{ 45: } 69,
{ 46: } 72,
{ 47: } 72,
{ 48: } 75,
{ 49: } 75,
{ 50: } 75,
{ 51: } 75,
{ 52: } 75,
{ 53: } 75,
{ 54: } 75,
{ 55: } 75,
{ 56: } 75,
{ 57: } 80,
{ 58: } 85,
{ 59: } 90,
{ 60: } 95,
{ 61: } 100,
{ 62: } 105,
{ 63: } 110,
{ 64: } 115,
{ 65: } 116,
{ 66: } 117,
{ 67: } 118,
{ 68: } 119,
{ 69: } 119,
{ 70: } 126,
{ 71: } 127,
{ 72: } 128,
{ 73: } 128,
{ 74: } 131,
{ 75: } 134,
{ 76: } 137,
{ 77: } 140,
{ 78: } 143,
{ 79: } 148,
{ 80: } 153,
{ 81: } 156,
{ 82: } 156,
{ 83: } 156,
{ 84: } 156,
{ 85: } 156,
{ 86: } 156,
{ 87: } 156,
{ 88: } 156,
{ 89: } 156,
{ 90: } 156,
{ 91: } 156,
{ 92: } 156,
{ 93: } 156,
{ 94: } 156,
{ 95: } 156,
{ 96: } 156,
{ 97: } 159,
{ 98: } 159,
{ 99: } 159,
{ 100: } 159,
{ 101: } 162,
{ 102: } 171,
{ 103: } 171,
{ 104: } 174,
{ 105: } 176,
{ 106: } 176,
{ 107: } 176,
{ 108: } 176,
{ 109: } 176,
{ 110: } 176,
{ 111: } 176,
{ 112: } 176,
{ 113: } 176,
{ 114: } 176,
{ 115: } 176,
{ 116: } 176,
{ 117: } 176,
{ 118: } 176,
{ 119: } 176,
{ 120: } 176,
{ 121: } 176,
{ 122: } 176,
{ 123: } 176,
{ 124: } 176,
{ 125: } 176,
{ 126: } 176,
{ 127: } 176,
{ 128: } 176,
{ 129: } 176,
{ 130: } 176,
{ 131: } 176,
{ 132: } 176,
{ 133: } 176,
{ 134: } 176,
{ 135: } 176,
{ 136: } 179,
{ 137: } 182,
{ 138: } 185,
{ 139: } 185,
{ 140: } 185,
{ 141: } 185,
{ 142: } 185,
{ 143: } 185,
{ 144: } 185,
{ 145: } 185,
{ 146: } 185,
{ 147: } 185,
{ 148: } 185,
{ 149: } 185,
{ 150: } 185,
{ 151: } 185,
{ 152: } 185,
{ 153: } 188,
{ 154: } 188,
{ 155: } 188
);

yyr : array [1..yynrules] of YYRRec = (
{ 1: } ( len: 3; sym: -10 ),
{ 2: } ( len: 3; sym: -10 ),
{ 3: } ( len: 3; sym: -10 ),
{ 4: } ( len: 3; sym: -10 ),
{ 5: } ( len: 1; sym: -2 ),
{ 6: } ( len: 3; sym: -2 ),
{ 7: } ( len: 1; sym: -2 ),
{ 8: } ( len: 2; sym: -3 ),
{ 9: } ( len: 3; sym: -3 ),
{ 10: } ( len: 1; sym: -4 ),
{ 11: } ( len: 1; sym: -4 ),
{ 12: } ( len: 1; sym: -4 ),
{ 13: } ( len: 1; sym: -4 ),
{ 14: } ( len: 3; sym: -4 ),
{ 15: } ( len: 3; sym: -4 ),
{ 16: } ( len: 3; sym: -4 ),
{ 17: } ( len: 3; sym: -4 ),
{ 18: } ( len: 3; sym: -4 ),
{ 19: } ( len: 2; sym: -4 ),
{ 20: } ( len: 1; sym: -4 ),
{ 21: } ( len: 1; sym: -4 ),
{ 22: } ( len: 3; sym: -4 ),
{ 23: } ( len: 5; sym: -4 ),
{ 24: } ( len: 2; sym: -5 ),
{ 25: } ( len: 3; sym: -5 ),
{ 26: } ( len: 4; sym: -8 ),
{ 27: } ( len: 5; sym: -8 ),
{ 28: } ( len: 8; sym: -8 ),
{ 29: } ( len: 1; sym: -9 ),
{ 30: } ( len: 3; sym: -9 ),
{ 31: } ( len: 1; sym: -6 ),
{ 32: } ( len: 3; sym: -6 ),
{ 33: } ( len: 3; sym: -7 ),
{ 34: } ( len: 2; sym: -11 ),
{ 35: } ( len: 1; sym: -11 ),
{ 36: } ( len: 1; sym: -11 ),
{ 37: } ( len: 2; sym: -12 ),
{ 38: } ( len: 2; sym: -12 ),
{ 39: } ( len: 3; sym: -12 ),
{ 40: } ( len: 3; sym: -15 ),
{ 41: } ( len: 3; sym: -15 ),
{ 42: } ( len: 3; sym: -15 ),
{ 43: } ( len: 3; sym: -13 ),
{ 44: } ( len: 3; sym: -13 ),
{ 45: } ( len: 2; sym: -13 ),
{ 46: } ( len: 3; sym: -13 ),
{ 47: } ( len: 3; sym: -13 ),
{ 48: } ( len: 3; sym: -13 ),
{ 49: } ( len: 3; sym: -13 ),
{ 50: } ( len: 3; sym: -14 ),
{ 51: } ( len: 3; sym: -14 ),
{ 52: } ( len: 3; sym: -14 ),
{ 53: } ( len: 3; sym: -14 ),
{ 54: } ( len: 3; sym: -14 ),
{ 55: } ( len: 3; sym: -14 ),
{ 56: } ( len: 3; sym: -14 ),
{ 57: } ( len: 3; sym: -14 ),
{ 58: } ( len: 3; sym: -14 ),
{ 59: } ( len: 3; sym: -14 ),
{ 60: } ( len: 3; sym: -14 ),
{ 61: } ( len: 3; sym: -14 ),
{ 62: } ( len: 3; sym: -14 ),
{ 63: } ( len: 3; sym: -14 ),
{ 64: } ( len: 3; sym: -14 ),
{ 65: } ( len: 3; sym: -14 ),
{ 66: } ( len: 3; sym: -14 ),
{ 67: } ( len: 4; sym: -16 ),
{ 68: } ( len: 1; sym: -16 ),
{ 69: } ( len: 3; sym: -16 ),
{ 70: } ( len: 3; sym: -16 ),
{ 71: } ( len: 1; sym: -17 ),
{ 72: } ( len: 1; sym: -17 )
);


const _error = 256; (* error token *)

function yyact(state, sym : Integer; var act : Integer) : Boolean;
  (* search action table *)
  var k : Integer;
  begin
    k := yyal[state];
    while (k<=yyah[state]) and (yya[k].sym<>sym) do inc(k);
    if k>yyah[state] then
      yyact := false
    else
      begin
        act := yya[k].act;
        yyact := true;
      end;
  end(*yyact*);

function yygoto(state, sym : Integer; var nstate : Integer) : Boolean;
  (* search goto table *)
  var k : Integer;
  begin
    k := yygl[state];
    while (k<=yygh[state]) and (yyg[k].sym<>sym) do inc(k);
    if k>yygh[state] then
      yygoto := false
    else
      begin
        nstate := yyg[k].act;
        yygoto := true;
      end;
  end(*yygoto*);

label parse, next, error, errlab, shift, reduce, accept, abort;

begin(*yyparse*)

  (* initialize: *)

  yystate := 0; yychar := -1; yynerrs := 0; yyerrflag := 0; yysp := 0;

{$ifdef yydebug}
  yydebug := true;
{$else}
  yydebug := false;
{$endif}

parse:

  (* push state and value: *)

  inc(yysp);
  if yysp>yymaxdepth then
    begin
      yyerror('yyparse stack overflow');
      goto abort;
    end;
  yys[yysp] := yystate; yyv[yysp] := yyval;

next:

  if (yyd[yystate]=0) and (yychar=-1) then
    (* get next symbol *)
    begin
      yychar := lexer.parse(); if yychar<0 then yychar := 0;
    end;

  if yydebug then writeln('state ', yystate, ', char ', yychar);

  (* determine parse action: *)

  yyn := yyd[yystate];
  if yyn<>0 then goto reduce; (* simple state *)

  (* no default action; search parse table *)

  if not yyact(yystate, yychar, yyn) then goto error
  else if yyn>0 then                      goto shift
  else if yyn<0 then                      goto reduce
  else                                    goto accept;

error:

  (* error; start error recovery: *)

  if yyerrflag=0 then yyerror('syntax error');

errlab:

  if yyerrflag=0 then inc(yynerrs);     (* new error *)

  if yyerrflag<=2 then                  (* incomplete recovery; try again *)
    begin
      yyerrflag := 3;
      (* uncover a state with shift action on error token *)
      while (yysp>0) and not ( yyact(yys[yysp], _error, yyn) and
                               (yyn>0) ) do
        begin
          if yydebug then
            if yysp>1 then
              writeln('error recovery pops state ', yys[yysp], ', uncovers ',
                      yys[yysp-1])
            else
              writeln('error recovery fails ... abort');
          dec(yysp);
        end;
      if yysp=0 then goto abort; (* parser has fallen from stack; abort *)
      yystate := yyn;            (* simulate shift on error *)
      goto parse;
    end
  else                                  (* no shift yet; discard symbol *)
    begin
      if yydebug then writeln('error recovery discards char ', yychar);
      if yychar=0 then goto abort; (* end of input; abort *)
      yychar := -1; goto next;     (* clear lookahead char and try again *)
    end;

shift:

  (* go to new state, clear lookahead character: *)

  yystate := yyn; yychar := -1; yyval := yylval;
  if yyerrflag>0 then dec(yyerrflag);

  goto parse;

reduce:

  (* execute action, pop rule from stack, and go to next state: *)

  if yydebug then writeln('reduce ', -yyn);

  yyflag := yyfnone; yyaction(-yyn);
  dec(yysp, yyr[-yyn].len);
  if yygoto(yys[yysp], yyr[-yyn].sym, yyn) then yystate := yyn;

  (* handle action calls to yyaccept, yyabort and yyerror: *)

  case yyflag of
    yyfaccept : goto accept;
    yyfabort  : goto abort;
    yyferror  : goto errlab;
  end;

  goto parse;

accept:

  Result := 0; exit;

abort:

  Result := 1; exit;

end(*yyparse*);


function TLexer.parse: Integer;
var
  FStartPos: Integer;
  
{$DEFINE SYNTAXPAS}
{$I lexer.inc}

function ParseExpr(AExpr: WideString; AGlobalTable: TConstituents):TStep;
var
	lexer : TLexer;
	parser : TParser;
begin
  FLine := AExpr;
  FPosition := 1;
  FLength := Length(AExpr);
  GlobalTable := AGlobalTable;
  LocalTable :=  TSymbolTable.Create;
  lexer := TLexer.Create;
	parser := TParser.Create;
	try
	  parser.lexer := lexer;
    try
      parser.parse;
    except
      on E: ELanguageException do
      begin
        E.Position := FPosition - Length(FLexValue);
        raise;
      end;
    end;

  finally
    Result := ResValue;
    lexer.Free;
    parser.Free;
    LocalTable.Free;
  end;
end;

end.